Cloudflareを使ってウェブサイトを無料でHTTPS化してみた
Cloudflare は様々な SSLオプション(HTTPS化)を提供しています。
今回は、ウェブサイトを SSL 化 する構成パターンをご紹介します。
すべて無料プランで利用可能です。
前提
大前提として、CloudFlare からトラフィックを配信するよう、ウェブサイトを Cloudflare に登録します。
具体的には、以下を行います。
- Cloudflareアカウントを作成してWebサイトを追加
- ドメインのネームサーバーをCloudflareに変更
- オリジンサーバーをサブドメイン「www.」で登録
Cloudflare フルマネージドの無償 SSL 証明書
追加したドメインが「example.com」の場合、
- example.com
- *.example.com
に対応した証明書(Universal Certificateと呼びます)が DigiCert から無償で発行されます。
証明書の有効期限は1年であり、DNS の TXT レコードを利用したドメイン認証で、自動更新されます。
この証明書は コンソールの 「SSL/TLS → Edge Certificates」 から確認できます。
SSL 主要3パターン
ブラウザ/Cloudflare/オリジンサーバー間の通信 の SSL 化について、主要3パターンを紹介します。
パターン1:SSL化しない
1つ目のパターンは SSL 化しません。
この場合、Cloudflare の設定は不要です。
セキュリティの向上や HTTP/2 などの最近のプロトコルの制約などから、常時 SSL 化が推奨されています。
特殊な事情がない限りは、SSL 化を検討しましょう。
パターン2:ブラウザ - Cloudflare 間だけ HTTPS化
2つ目のパターンは、ブラウザ - CloudFlare 間だけ HTTPS 化します。
コンソールの「SSL/TLS」で Flexible を選択するだけで設定完了です。
ブラウザで HTTPS 接続してみましょう。
DigiCert の証明書を確認できますね。
- Common Name : sni.cloudflaressl.com
- Subject Alternative Name : sni.cloudflaressl.com, example.com, *.example.com
となっています。
コンソールの「SSL/TLS → Edge Certificates → Always Use HTTPS」 を「On」にすると、HTTP 接続時に HTTPS へリダイレクされるようになります。
常時HTTPS化のためにも、この設定は有効にしておきましょう。
パターン3:ブラウザ - Cloudflare - オリジンサーバー 間を end-to-end に HTTPS化
3つ目のパターンは end-to-end で HTTPS 化します。
コンソールの「SSL/TLS→ Overview」で Full(strict) を選択し、Cloudflare - オリジン間の通信を HTTPS 化するために、オリジンサーバーに SSL 証明書をインストールします。
オリジンサーバーの SSL 証明書のインストール
Cloudflare には「Origin CA Certificates」という機能があり、オリジンサーバー向けに
- example.com
- *.example.com
のホスト名に対応した証明書、秘密鍵を生成します。
これらを生成するには、コンソールの「SSL/TLS→ Origin Server」で「Create Certificate」をクリックし、証明書の作成画面に移動します。
証明書のフォーマットや有効期限(デフォルトでは15年。最短で7日)を指定するだけで作成完了です。
生成された証明書、秘密鍵をオリジンサーバーにインストールすれば end-to-end の HTTPS化の完了です。
AWS Certificate Manager(ACM) に証明書をインストールする場合など、オプションでルート証明書も設定する必要がある場合もあります。リンク先から適宜ルート証明書を取得してください。
Cloudflare で利用可能な SSL 証明書の種類
今回証明した SSL 証明書は無料プランでも利用可能な Universal 証明書です。
有料プランを契約すると、Universal 証明書以外にも
- ドメイン専有型の Dedicated SSL 証明書(Universal は Common Name が sni.cloudflaressl.com 固定)
- EV/OV に対応した Custom SSL 証明書(EV/OV 対応など)
- よりセキュアな Keyless SSL 証明書
など、用途に合わせて様々な証明書を利用できます。
詳細は次のドキュメントを参照ください。
End-to-end HTTPS with Cloudflare - Part 2: SSL certificates – Cloudflare Help Center